perm filename G8[KID,KMC] blob sn#122907 filedate 1974-11-15 generic text, type T, neo UTF8
TITLE G8
;THIS MEMBER OF THE NEW KIDS SUITE WAS THE OLD GAME 2. IT DISPLAYS
;ALL LETTERS THAT THE CHILD TYPES ON A RECTANGULAR GRID. IT ENABLES
;THE CHILD TO COMPARE CHARACTERS WITH EACH OTHER.

EXTERNAL MAINLP,DPINIT,PDPGET,CLEAR,SHOW,AIVECT,CHINIT
EXTERNAL LV2,KILL,TYOPTR,TIKCNT,DDRREL,DMDDIR,SPEAK
INTERNAL DOTHNG,GAMNAM,GAMENO,DIRECT

X1←6
X2 ← X1+1
X3 ← X2+1
X4 ← X3+1
X5 ← X4+1
X6 ← X5+1
P←17
A←13	;SAME AS X6
B←14
C←15

GAMNAM:	0
GAMENO:	001000000000		;GAME NUMBER FOR HISTORY FILE
DIRECT:	BLOCK	=2		;DUMMY DIRECTORY AREA
ENTURD:	0			;ZERO UNTIL FIRST TIME THROUGH.

DOTHNG:	;POSSIBLY DO INITIALISATION.
	MOVE	A,ENTURD	;FIRST TIME TRU INDICATOR.
	JUMPN	A,APRES		;SKIP INITIALISATION IF SET
	SETOM	ENTURD		;NEVER INITIALISE AGAIN.
INITL:	;THIS CODE IS PRELIMINARY TO PUTTING FIRST CHAR UP.
	SETZM	NCHARS		;NCHARS←0
	SETZM	NLINES		;NLINES ← 0;
	SETZM	LSTLTH		;INITIALLY A LIST OF 0 CHARS.
	PUSHJ	P,CRLF		;END THE LINE.

APRES:	;INITIALISATION DONE IF NEEDED.
	;THE CHARACTER TYPED IS IN X1 (RANGE IS 000 TO 137).
	MOVE	X2,ALFBET(X1)	;SOUND FILE NAME IF ANY.
	JUMPE	X2,MAINLP	;FORGET IT IF NO SOUND FILE.
	CAIE	X1,15		;TEST FOR CR.
	JRST	.+3
	MOVEI	X1,001		;THE DOWN ARROW
	JRST	SLOOB
	CAIE	X1,11		;TEST FOR TAB.
	JRST	.+2
	MOVEI	X1,031		;THE RIGHT POINTING ARROW
SLOOB:	;X1 CONTAINS THE CHARACTER TO BE SHOWN.
	MOVE	A,LSTLTH	; # OF CHARS ALREADY THERE.
	MOVEM	X1,LSTAR(A)	;PUT LATEST CHAR IN LIST.
	MOVEI	B,040		;A SPACE CHARACTER
	MOVEM	B,LSTAR+1(A)
	MOVEM	B,LSTAR+2(A)
	ADDI	A,3		;NOW 3 EXTRA CHARS.
	MOVEM	A,LSTLTH	;PUT IT WHERE IT COUNTS.

FILLIN:	;NOW SHOW THOSE CHARS WHICH WE HAVE.
	PUSHJ	P,CLEAR		;CLEAR BUFFER
	MOVEI	A,=0
	MOVEI	B,=400
	PUSHJ	P,AIVECT	;AIVECT(0,400)
	MOVEI	A,0
	MOVEI	B,0
	MOVEI	C,46
	MOVEI	0,7
	DPB	0,[POINT 3,C,27]
	PUSHJ	P,LV2		;GVECT(0,0,46,7,0)
	MOVEI	A,7
	MOVEI	B,=1000
	MOVEI	C,=-500		
	PUSHJ	P,CHINIT	;CHINIT(7,1000,-500)

	MOVEI	A,0		;THIS WILL COUNT THE CHARACTERS  PRINTED.
FILLLP:	MOVE	B,LSTAR(A)	;GET THE NEXT
	IDPB	B,TYOPTR	;PUTIT DISPLAY BUFFER
	ADDI	A,1		;COUNT THAT
	CAMGE	A,LSTLTH
	JRST	FILLLP

	MOVEI	A,1		;SHOW THE CURRENT TEXT ON POG 1
	PUSHJ	P,SHOW
	MOVE	A,X2		;THE FILENAME.
	PUSHJ	P,DMDDIR
	JUMPN	A,.+2
	PUSHJ	P,SPEAK
	AOS	NCHARS		;BUMP LINE CHARACTER COUNT
	MOVE	A,NCHARS	;WILL TEST FOR OVERFLOW.
	CAIE	A,7
	JRST	LAB1		;NCHARS ≠ 7
	SETZM	NCHARS		;NCHARS←0
	AOS	NLINES		;NLINES←NLINES+1
	PUSHJ	P,CRLF
	PUSHJ	P,CRLF
LAB1:	MOVE	A,NLINES
	CAIN	A,4
	SETZM	ENTURD
	JRST	MAINLP		


CRLF:	;OUTPUT A CR AND A LF
	MOVE	A,LSTLTH
	MOVEI	B,015		;A CR CHARACTER
	MOVEM	B,LSTAR(A)	;ADD IT TO LIST
	MOVEI	B,012
	MOVEM	B,LSTAR+1(A)	;DO IT TO IT TOO.
	ADDI	A,2
	MOVEM	A,LSTLTH	;INCREASE LENGTH OF LIST
	POPJ	P,


NCHARS:	0
NLINES:	0
LSTLTH:	0			;LENGTH OF LIST OF CHARACTERS FOR BUFFER.
LSTAR:	BLOCK	=200


ALFBET:	0			;000
	0			;001
	0			;002
	0			;003
	0			;004
	0			;005
	0			;006
	0			;007
	0			;010
	SIXBIT	/XTAB8/		;011
	0			;012
	0			;013
	0			;014
	SIXBIT	/XCR8/		;015
	0			;016
	0			;017
	0			;020
	0			;021
	0			;022
	0			;023
	0			;024
	0			;025
	0			;026
	0			;027
	0			;030
	0			;031
	0			;032
	0			;033
	0			;034
	0			;035
	0			;036
	0			;037
	SIXBIT	/XSP8/		;040
	0			;041
	0			;042
	0			;043
	0			;044
	0			;045
	0			;046
	0			;047
	SIXBIT	/XLP8/		;050
	SIXBIT	/XRP8/		;051
	0			;052
	SIXBIT	/XPLS8/		;053
	SIXBIT	/XCOM8/		;060
	0			;061
	SIXBIT	/XPER8/		;062
	0			;057
	SIXBIT	/N08/		;060
	SIXBIT	/N18/		;061
	SIXBIT	/N28/		;062
	SIXBIT	/N38/		;063
	SIXBIT	/N48/		;064
	SIXBIT	/N58/		;065
	SIXBIT	/N68/		;066
	SIXBIT	/N78/		;067
	SIXBIT	/N88/		;070
	SIXBIT	/N98/		;071
	0			;072
	SIXBIT	/XSMI8/		;073
	0			;074
	0			;075
	0			;076
	0			;077
	0			;100	
	SIXBIT	/A8/		;101
	SIXBIT	/B8/		;102
	SIXBIT	/C8/		;103
	SIXBIT	/D8/		;104
	SIXBIT	/E8/		;105
	SIXBIT	/F8/		;106
	SIXBIT	/G8/		;107
	SIXBIT	/H8/		;110
	SIXBIT	/I8/		;111
	SIXBIT	/J8/		;112
	SIXBIT	/K8/		;113
	SIXBIT	/L8/		;114
	SIXBIT	/M8/		;115
	SIXBIT	/N8/		;116
	SIXBIT	/O8/		;117
	SIXBIT	/P8/		;120
	SIXBIT	/Q8/		;121
	SIXBIT	/R8/		;122
	SIXBIT	/S8/		;123
	SIXBIT	/T8/		;124
	SIXBIT	/U8/		;125
	SIXBIT	/V8/		;126
	SIXBIT	/W8/		;127
	SIXBIT	/X8/		;130
	SIXBIT	/Y8/		;131
	SIXBIT	/Z8/		;132
	0			;133
	0			;134
	0			;135
	0			;136
	SIXBIT	/XBSP8/		;137

END